#pragma once
#include "TextParser.h"
#include "Mesh.h"
#include "Material.h"
#include "AssetData.h"
class ASEParser : public TextParser
{
public:
	ASEParser();
	~ASEParser();

	AssetDataPtr m_pAssetData;
	AssetDataList m_AssetDataList;
	virtual AssetDataList & VGetData() { 
		return m_AssetDataList; 
	}
	std::vector<D3DXVECTOR3> m_TempMap;

	virtual void VBegin();
	virtual void VEnd();

	static void STACK_BEGIN(ASEParser *instance);
	static void STACK_END(ASEParser *instance);
	static void GEOMOBJECT(ASEParser *instance);
	static void COMMENT(ASEParser *instance);
	static void MATERIAL_LIST(ASEParser *instance);
	static void MATERIAL_COUNT(ASEParser *instance);
	static void MATERIAL(ASEParser *instance);
	static void MATERIAL_NAME(ASEParser *instance);
	static void MATERIAL_AMBIENT(ASEParser *instance);
	static void MATERIAL_DIFFUSE(ASEParser *instance);
	static void MATERIAL_SPECULAR(ASEParser *instance);
	static void MATERIAL_SPECULARPOWER(ASEParser *instance);
	static void NODE_NAME(ASEParser *instance);
	static void NODE_TM(ASEParser *instance);
	static void MESH(ASEParser *instance);
	static void MESH_NUMVERTEX(ASEParser *instance);
	static void MESH_NUMFACES(ASEParser *instance);
	static void MESH_VERTEX_LIST(ASEParser *instance);
	static void MESH_VERTEX(ASEParser *instance);
	static void MESH_FACE_LIST(ASEParser *instance);
	static void MESH_FACE(ASEParser *instance);
	static void MESH_NUMTVERTEX(ASEParser *instance);
	static void MESH_TVERTLIST(ASEParser *instance);
	static void MESH_TVERT(ASEParser *instance);
	static void MESH_NUMTVFACES(ASEParser *instance);
	static void MESH_TFACELIST(ASEParser *instance);
	static void MESH_TFACE(ASEParser *instance);
	static void MESH_NORMALS(ASEParser *instance);
	static void MESH_FACENORMAL(ASEParser *instance);
	static void MESH_VERTEXNORMAL(ASEParser *instance);
};